Estoy tratando de mostrar todos los datos con la declaración "poblar". Pero solo obtengo un "poblar" pero cuando pongo muchos no funciona. lo que quiero hacer es traerme los datos del modelo "Usuario", "Cliente" también.
este es mi codigo
Mi modelo:
import { model, Schema } from 'mongoose'; const RoomSchema = new Schema({ Users: [ { agentId: { type: Schema.Types.ObjectId, ref: "User", required: false, }, customerId: { type: Schema.Types.ObjectId, ref: "Customer", required: false, }, typeId: Number, // 1 - agent, 2 - client }, ], Messages: [ { agentId: { type: Schema.Types.ObjectId, ref: "User", required: false, }, customerId: { type: Schema.Types.ObjectId, ref: "Customer", required: false, }, message: { type: String, required: true, }, date: Date, sender: Number, }, ], FinishAt: Date, FinishBy: String, typeFinishBy: Number, // 1 - agent, 2 - client }, { timestamps: true, versionKey: false }); export default model('Room', RoomSchema);esta es la frase que estoy usando
import Room from "../models/Room.js"; async function getOnlyRoom(id) { const foundRoom = await Room.findById(id) .populate('Users.agentId') .populate('Users.customerId') .populate('Messages.agentId') .populate('Messages.customerId') .execPopulate(); return foundRoom }solo funciona con uno
foundRoom.populate('Users.customerId')esta es la imagen de error de error
Muchas gracias por su ayuda
Encontré la solución a mi problema. Estaba investigando la solución en el sitio web de mongoose y lo hice con una sola población.
const populateRoom = await foundRoom .populate([ { path: 'Users.agentId', select: 'name' }, { path: 'Users.customerId', select: 'name' }, { path: 'Messages.agentId', select: 'name' }, { path: 'Messages.customerId', select: 'name' } ]) return populateRoom;